package com.fs.mapper;

import com.fs.entity.Product;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 商品数据访问层
 * 负责与数据库交互：插入、查询、更新、删除
 */
@Mapper
public interface ProductMapper {

    /**
     * 插入新商品记录
     */
    @Insert("INSERT INTO product (name, type, price, language, status, image, intro, stock, create_time, update_time) " +
            "VALUES (#{name}, #{type}, #{price}, #{language}, #{status}, #{image}, #{intro}, #{stock}, #{createTime}, #{updateTime})")
    void insert(Product product);

    /**
     * 根据ID查询商品
     */
    @Select("SELECT * FROM product WHERE id = #{id}")
    Product getById(Long id);

    /**
     * 更新商品信息
     */
    void update(Product product);


    /**
     * 动态更新：只更新非空字段（在 XML 中实现）
     */
    void updateSelective(Product product);


    /**
     * 批量删除商品
     */
    void deleteByIds(@Param("ids") List<Long> ids);

    /**
     * 条件查询（无分页，动态 SQL，支持 name/type/tag/status/sort）
     * 返回 Product（或可返回 ProductVO，如果需要封装标签/图片则在 Service 中再查询补充）
     */
    List<Product> selectByCondition(@Param("name") String name,
                                    @Param("type") String type,
                                    @Param("tag") String tag,
                                    @Param("status") Integer status,
                                    @Param("sortField") String sortField,
                                    @Param("sortOrder") String sortOrder);
}
